using System.Collections.Generic;
using System.IO;
using FireStarter.Base;
using FireStarter.CodeGeneration;
using FireStarterModeller.BO;
using NUnit.Framework;
namespace FireStarter.Test.CodeGeneration
{
    [TestFixture]
    public class TestClassGenerator
    {
        [Test]
        public void Test_ConstructClassGenerator()
        {
            //---------------Set up test pack-------------------
            const string className = "someFile";
            const string projectName = "some project";
            const string projectPath = "some project path";

            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            ClassGenerator classGenerator = new MockClassGenerator(className, projectName, projectPath);

            //---------------Test Result -----------------------
            Assert.AreEqual(className + ".cs", classGenerator.FileName);
            Assert.AreEqual(className, classGenerator.ClassName);
            Assert.AreEqual(projectName, classGenerator.ProjectName);
            Assert.AreEqual(projectPath, classGenerator.ProjectPath);
        }

        private class MockClassGenerator :ClassGenerator
        {
            public MockClassGenerator(string fileName, string projectName, string projectPath) : 
                base(fileName, projectName, projectPath)
            {
                
            }

            public override void GenerateCode()
            {
                throw new System.NotImplementedException();
            }

            public override string GetValueReplacementContent(string tagContent)
            {
                throw new System.NotImplementedException();
            }

            public override IList<IModelClass> GetModelElementsCollection(string tagContent)
            {
                throw new System.NotImplementedException();
            }

            public override void Construct()
            {

            }

            public override void Compile()
            {
                throw new System.NotImplementedException();
            }
        }
    }
}